Add default class implementation of gtk_widget_get_request_mode().
authorTristan Van Berkom <tristan.van.berkom@gmail.com>
Fri, 28 Jan 2011 06:54:50 +0000 (15:54 +0900)
committerTristan Van Berkom <tristan.van.berkom@gmail.com>
Fri, 28 Jan 2011 06:58:07 +0000 (15:58 +0900)
Instead of checking if klass->get_request_mode is != NULL from
the gtk_widget_get_request_mode() api, this allows classes to
trust that there is a default implementation and chain up (specifically
added this for gtkmm wrapper objects).

gtk/gtksizerequest.c
gtk/gtkwidget.c

index 272f2ebfbea18215d65f6566af754eaa73cb98cb..ef96ed04028284606724a7c39698af2d021964b8 100644 (file)
@@ -370,16 +370,9 @@ compute_size_for_orientation (GtkWidget         *widget,
 GtkSizeRequestMode
 gtk_widget_get_request_mode (GtkWidget *widget)
 {
-  GtkWidgetClass *klass;
-
   g_return_val_if_fail (GTK_IS_WIDGET (widget), GTK_SIZE_REQUEST_HEIGHT_FOR_WIDTH);
 
-  klass = GTK_WIDGET_GET_CLASS (widget);
-  if (klass->get_request_mode)
-    return klass->get_request_mode (widget);
-
-  /* By default widgets are height-for-width. */
-  return GTK_SIZE_REQUEST_HEIGHT_FOR_WIDTH;
+  return GTK_WIDGET_GET_CLASS (widget)->get_request_mode (widget);
 }
 
 /**
index 00343bfb5fbb2b8ba6662af146e5925b941b9620..281e5392327f7c2b7a140e4bcfe02fa161b60ca1 100644 (file)
@@ -634,6 +634,7 @@ static void             gtk_widget_buildable_custom_finished    (GtkBuildable
 static void             gtk_widget_buildable_parser_finished    (GtkBuildable     *buildable,
                                                                  GtkBuilder       *builder);
 
+static GtkSizeRequestMode gtk_widget_real_get_request_mode      (GtkWidget         *widget);
 static void             gtk_widget_real_get_width               (GtkWidget         *widget,
                                                                  gint              *minimum_size,
                                                                  gint              *natural_size);
@@ -834,6 +835,7 @@ gtk_widget_class_init (GtkWidgetClass *klass)
   klass->realize = gtk_widget_real_realize;
   klass->unrealize = gtk_widget_real_unrealize;
   klass->size_allocate = gtk_widget_real_size_allocate;
+  klass->get_request_mode = gtk_widget_real_get_request_mode;
   klass->get_preferred_width = gtk_widget_real_get_width;
   klass->get_preferred_height = gtk_widget_real_get_height;
   klass->get_preferred_width_for_height = gtk_widget_real_get_width_for_height;
@@ -12940,6 +12942,13 @@ gtk_widget_buildable_custom_finished (GtkBuildable *buildable,
     }
 }
 
+static GtkSizeRequestMode 
+gtk_widget_real_get_request_mode (GtkWidget *widget)
+{ 
+  /* By default widgets are height-for-width. */
+  return GTK_SIZE_REQUEST_HEIGHT_FOR_WIDTH;
+}
+
 static void
 gtk_widget_real_get_width (GtkWidget *widget,
                           gint      *minimum_size,